Developers of desktop and network-based applications may incorporate services, such as e-mail services, mapping services, search services, etc., into their applications that are provided by a third party. Two common approaches to providing a service to an application developer include: charging the application developer a per-transaction fee for the use of the service, and making the service completely free to the application developer. Problems exist in both of these approaches.
For example, charging the application developer a per-transaction fee for using the service holds back the application developer from even creating the application, since no developer wants to get stuck with fees they cannot pay; forces the application developer to think about money before user experience; and causes the application developer to be fully committed to the business model, making the barriers for participation very high. In the second approach (where the service is completely free to the application developer), there are no clear or obvious incentives for the application developer to efficiently use the third party's services towards a goal that is in line with the third party. Moreover, application developers can create applications that only have a very tangential relationship to the third party's business, and the third party foots the entire bill for the backend infrastructure since, again, the services are free.